# 我将详细列出CVCUDA Python API中的25个主要函数，包括每个函数的参数列表和参数的数据结构。
import cvcuda
# CVCUDA Python API 函数参数列表详解

## 1. resize

result = cvcuda.resize(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    size,           # 输出尺寸: tuple(int, int) 表示(width, height)
    interpolation=cvcuda.INTER_LINEAR,  # 插值方法: int
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 2. warp_perspective

result = cvcuda.warp_perspective(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    transform,      # 变换矩阵: nvcv.Tensor, shape=[batch, 3, 3], dtype=float32
    flags=0,        # 变换标志: int
    interpolation=cvcuda.INTER_LINEAR,  # 插值方法: int
    border_mode=cvcuda.BORDER_CONSTANT, # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 3. crop

result = cvcuda.crop(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    roi,            # 感兴趣区域: list[tuple(x, y, width, height)] 或 nvcv.Tensor
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 4. cvt_color

result = cvcuda.cvt_color(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    code,           # 颜色转换代码: int (如cvcuda.COLOR_BGR2RGB)
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 5. gaussian_filter

result = cvcuda.gaussian_filter(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    kernel_size,    # 内核大小: tuple(int, int) 表示(width, height)
    sigma,          # 高斯标准差: float 或 tuple(float, float) 表示(sigma_x, sigma_y)
    border_mode=cvcuda.BORDER_DEFAULT,  # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 6. normalize

result = cvcuda.normalize(
    src,            # 输入: nvcv.Tensor
    base,           # 基值: float 或 nvcv.Tensor
    scale,          # 缩放值: float 或 nvcv.Tensor
    epsilon=0.0,    # 防止除零的小值: float
    flags=0,        # 标准化标志: int
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor


## 7. composite

result = cvcuda.composite(
    foreground,     # 前景: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    background,     # 背景: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    alpha,          # 透明度: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 8. filter2D

result = cvcuda.filter2D(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    kernel,         # 卷积核: nvcv.Tensor, dtype=float32
    anchor=(-1, -1), # 锚点: tuple(int, int)
    border_mode=cvcuda.BORDER_DEFAULT,  # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 9. morph

result = cvcuda.morph(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    kernel,         # 形态学核: nvcv.Tensor
    morphology_type, # 形态学操作类型: int (ERODE, DILATE等)
    iterations=1,   # 迭代次数: int
    border_mode=cvcuda.BORDER_DEFAULT,  # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 10. bilateral_filter

result = cvcuda.bilateral_filter(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    diameter,       # 过滤直径: int
    sigma_color,    # 颜色空间的标准差: float
    sigma_space,    # 坐标空间的标准差: float
    border_mode=cvcuda.BORDER_DEFAULT,  # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 11. non_maximum_suppression

result = cvcuda.non_maximum_suppression(
    scores,         # 得分: nvcv.Tensor, dtype=float32
    boxes,          # 边界框: nvcv.Tensor, shape=[N, 4], dtype=float32
    score_threshold, # 得分阈值: float
    iou_threshold,  # IoU阈值: float
    max_output_boxes_per_class=0, # 每类最大输出框数: int
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor, 包含保留的框的索引


## 12. adaptive_threshold

result = cvcuda.adaptive_threshold(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape (单通道)
    max_value,      # 最大值: int 或 float
    adaptive_method, # 自适应方法: int (MEAN_C, GAUSSIAN_C)
    threshold_type, # 阈值类型: int (BINARY, BINARY_INV)
    block_size,     # 块大小: int (必须是奇数)
    constant,       # 常数: float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 13. channel_reorder

result = cvcuda.channel_reorder(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    channel_order,  # 通道顺序: list[int]
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 14. rotate

result = cvcuda.rotate(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    angle,          # 旋转角度: float 或 nvcv.Tensor (弧度)
    center=None,    # 旋转中心: tuple(x, y) 或 None (图像中心)
    scale=1.0,      # 缩放因子: float
    interpolation=cvcuda.INTER_LINEAR,  # 插值方法: int
    border_mode=cvcuda.BORDER_CONSTANT, # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 15. median_blur

result = cvcuda.median_blur(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    kernel_size,    # 内核大小: tuple(int, int) 或 int
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 16. pad

result = cvcuda.pad(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    padding,        # 填充大小: tuple(top, bottom, left, right) 或 nvcv.Tensor
    border_mode=cvcuda.BORDER_CONSTANT, # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 17. convert_to

result = cvcuda.convert_to(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    dtype,          # 目标数据类型: np.dtype
    scale=1.0,      # 缩放因子: float
    offset=0.0,     # 偏移量: float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 18. threshold

result = cvcuda.threshold(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape (单通道)
    thresh,         # 阈值: float
    maxval,         # 最大值: float
    threshold_type, # 阈值类型: int (BINARY, BINARY_INV等)
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 19. find_contours

contours = cvcuda.find_contours(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape (二值图像)
    mode,           # 检索模式: int (RETR_EXTERNAL, RETR_LIST等)
    method,         # 逼近方法: int (CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE等)
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: list[nvcv.Tensor] 轮廓点列表


## 20. copy_make_border

result = cvcuda.copy_make_border(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    top,            # 顶部边界: int
    bottom,         # 底部边界: int
    left,           # 左边界: int
    right,          # 右边界: int
    border_mode=cvcuda.BORDER_CONSTANT, # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 21. pyramid_up

result = cvcuda.pyramid_up(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    border_mode=cvcuda.BORDER_DEFAULT,  # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配，但尺寸翻倍)


## 22. pyramid_down

result = cvcuda.pyramid_down(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    border_mode=cvcuda.BORDER_DEFAULT,  # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配，但尺寸减半)


## 23. remap（续）

result = cvcuda.remap(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    map_x,          # X映射: nvcv.Tensor, dtype=float32
    map_y,          # Y映射: nvcv.Tensor, dtype=float32
    interpolation=cvcuda.INTER_LINEAR,  # 插值方法: int
    border_mode=cvcuda.BORDER_CONSTANT, # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)


## 24. resize_and_pad

result = cvcuda.resize_and_pad(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    size,           # 输出尺寸: tuple(int, int) 表示(width, height)
    pad_method,     # 填充方法: int (CENTER, TOPLEFT等)
    interpolation=cvcuda.INTER_LINEAR,  # 插值方法: int
    border_mode=cvcuda.BORDER_CONSTANT, # 边界模式: int
    border_value=0, # 边界值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor 或 nvcv.ImageBatchVarShape (与输入类型匹配)，以及信息nvcv.Tensor


## 25. histogram

histogram = cvcuda.histogram(
    src,            # 输入: nvcv.Tensor 或 nvcv.ImageBatchVarShape
    num_bins,       # 直方图的箱数: int
    min_value=0,    # 最小值: int 或 float
    max_value=255,  # 最大值: int 或 float
    stream=None     # CUDA流: Optional[cudaStream_t]
)
# 返回: nvcv.Tensor, 形状为[batch, channels, num_bins]的直方图


这些函数参数详情涵盖了CVCUDA主要的25个Python API函数。每个函数都接受特定的输入类型（通常是nvcv.Tensor或nvcv.ImageBatchVarShape）并返回处理后的结果。大多数函数都支持异步执行，通过可选的stream参数指定CUDA流。

请注意，根据CVCUDA的版本更新，一些函数的参数可能会有所变化，建议参考最新的官方文档获取最准确的信息。